]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensionSystem: Add a method to unload an extension
authorJasper St. Pierre <jstpierre@mecheye.net>
Tue, 5 Jun 2012 17:03:42 +0000 (13:03 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Tue, 12 Jun 2012 21:16:09 +0000 (17:16 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=677586

js/ui/extensionDownloader.js
js/ui/extensionSystem.js

index eda3872417d0e12a035006e08f03e4a993a375fe..c19559adb20a05bcf3264eec9767bf3fe51b8f45 100644 (file)
@@ -41,22 +41,14 @@ function uninstallExtensionFromUUID(uuid) {
     if (!extension)
         return false;
 
-    // Try to disable it -- if it's ERROR'd, we can't guarantee that,
-    // but it will be removed on next reboot, and hopefully nothing
-    // broke too much.
-    ExtensionSystem.disableExtension(uuid);
-
     // Don't try to uninstall system extensions
     if (extension.type != ExtensionUtils.ExtensionType.PER_USER)
         return false;
 
-    extension.state = ExtensionSystem.ExtensionState.UNINSTALLED;
-    _signals.emit('extension-state-changed', extension);
-
-    delete ExtensionUtils.extensions[uuid];
-
-    FileUtils.recursivelyDeleteDir(Gio.file_new_for_path(extension.path));
+    if (!ExtensionSystem.unloadExtension(uuid))
+        return false;
 
+    FileUtils.recursivelyDeleteDir(extension.dir);
     return true;
 }
 
index c33162d4db148f4f8b4d9cb5edce074b9b363fbf..abd219ea60bd9131334e99fe9708142e252e0989 100644 (file)
@@ -167,6 +167,23 @@ function loadExtension(extension) {
     _signals.emit('extension-state-changed', extension);
 }
 
+function unloadExtension(uuid) {
+    let extension = ExtensionUtils.extensions[uuid];
+    if (!extension)
+        return false;
+
+    // Try to disable it -- if it's ERROR'd, we can't guarantee that,
+    // but it will be removed on next reboot, and hopefully nothing
+    // broke too much.
+    disableExtension(uuid);
+
+    extension.state = ExtensionState.UNINSTALLED;
+    _signals.emit('extension-state-changed', extension);
+
+    delete ExtensionUtils.extensions[uuid];
+    return true;
+}
+
 function initExtension(uuid) {
     let extension = ExtensionUtils.extensions[uuid];
     let dir = extension.dir;